Case Study:
Web Browser
There are a number of browsers available for accessing the World Wide Web,
including Netscape Navigator, Microsoft Internet Explorer, and Apple's Cyberdog
suite of OpenDoc parts. All popular browsers have somewhat of a component
architecture, because extensibility and a compound document architecture
are required by the nature of the Web. In this section, we'll compare a
large application with component extensions to a completely component-based
solution. The subjects in this case study include:
Netscape Navigator
Navigator has an interesting architecture. It is a large application
with considerable built-in functionality, but it is not a traditional monolithic
application. What makes it interesting is that the user can extend the functionality
in two ways. First, "Helper" applications can be specified to
handle downloading and display of certain data or file types. Second, Netscape
publishes an API for developers
to build "plug-ins" that can display data directly in an area
of the browser itself. The diagram below illustrates the architecture.
/OpenDoc/Introduction to Component SW/Images/Cyberdog/NavArch.gif)
Navigator architecture
Cyberdog Architecture
Apple's Cyberdog
architecture provides a completely component-based solution, in that every
aspect of the information access is controlled by a different OpenDoc part.
An overview of the Cyberdog architecture is shown below.
/OpenDoc/Introduction to Component SW/Images/Cyberdog/CyberArch.gif)
Cyberdog architecture
Cyberdog Screen Shots
Screen shots of some of the resulting documents are shown below.
Container with CyberButtons
Cyberdog Web browser
Cyberdog Mail
Cyberdog Notebook
Comparison
Navigator and Cyberdog each uses a component architecture, although
they differ in their philosophy.
Navigator is a large, complex application that is extensible through the
use of Helper applications, Netscape plug-ins, and Java applets.
Navigator provides flexibility and extensibility with the plug-ins and applets,
but only to a limited degree. Navigator reserves the most crucial functions
to itself by building in support for mail, news, web browsing, and even
the Java run-time engine directly into the Navigator application. This means
that there is no way for end users or competing developers to plug-in a
better news reader or better Web browser. The result is that Navigator is
large and complex, and only partially extensible.
Cyberdog can also make use of Netscape plug-ins and Java applets through
special parts that can provide an execution environment for them. Better
yet, any of Cyberdog's part editors can be replaced by a third-party one.
This means that even the most basic functions, such as Web browsing can
be replaced. If the user does not want to use Apple's solution, then some
other one can be used instead.
Cyberdog provides two other significant advantages. First, monolithic Helper
applications are replaced by OpenDoc part editors and viewers. This means,
for example, that the MoviePlayer application is replaced by the smaller
KickStart MovieViewer. Perhaps
the most important advantage is that desired parts of Cyberdog can be dropped
into any container, including
container applications like
the upcoming ClarisWorks. The user can therefore add Internet access to
drawing programs, word processors, and even programs for doing numeric calculations.
Any application or part that provides OpenDoc container support automatically
becomes Internet-enabled.
Cyberdog Value Added
Navigator broke new ground in providing extensibility through
the use of Helper applications, plug-ins, and Java applets.
Cyberdog also allows that flexibility. Cyberdog goes much farther, however,
by providing replaceability for all major functions, and by providing a
mechanism for adding Internet access to any OpenDoc container. This means
that you will be able to add Internet access to traditional applications
such as the upcoming version of ClarisWorks, rather than Internet access
being completely separated from your productivity applications, as is it
today. This should allow the user much greater flexibility in getting their
work done.
Cyberdog Programming Notes
Cyberdog API
Some important classes in the Cyberdog API are shown in the diagram below,
copied from the Cyberdog
Programmer's Kit on the Cyberdog 1.0 CD-ROM.
/OpenDoc/Introduction to Component SW/Images/Cyberdog/MajorClasses.gif)
Some important Cyberdog classes
The major classes include:
- CyberService objects that represents a suite of objects that
implement a network protocol.
- CyberItem objects can address information for a given protocol.
- CyberStream objects understand how to download data for a given
protocol.
- CyberExtension objects support communication between various
CyberItems.
ODF Support for Cyberdog
The ODF team is also developing
support for creating Cyberdog part editors. See the OpenDoc SDK for details.
Two class diagrams (produced using Object
Master) for a preliminary version of the Cyberdog support library and
sample part editor are shown below.
/OpenDoc/Introduction to Component SW/Images/Cyberdog/ODFDogLib.gif)
ODF Cyberdog support classes
/OpenDoc/Introduction to Component SW/Images/Cyberdog/ODFDogSample.gif)
ODF Cyberdog sample program
To Learn More
Details on writing Cyberdog part editors can be found in the
Cyberdog
Programmer's Kit on the Cyberdog 1.0 CD-ROM.
Step-by-step instructions on writing a simple Cyberdog part can be found
on the Web in Developer University's new course entitled Get
Started Programming with Cyberdog.
/OpenDoc/Introduction to Component SW/Images/Buttons/Overview.gif)
/OpenDoc/Introduction to Component SW/Images/Buttons/HandsOn.gif)
/OpenDoc/Introduction to Component SW/Images/Buttons/Technologies.gif)
/OpenDoc/Introduction to Component SW/Images/Buttons/Components.gif)
/OpenDoc/Introduction to Component SW/Images/Buttons/Tools.gif)
/OpenDoc/Introduction to Component SW/Images/Buttons/CaseStudies.gif)
/OpenDoc/Introduction to Component SW/Images/Buttons/Resources.gif)
/OpenDoc/Introduction to Component SW/Images/Buttons/Glossary.gif)
Home